【经验内插 / Progressive S-Mods 存档损坏修复补丁】
================================================================

问题（原版 1.2.0 的 BUG）
---------------------------
ShipSelector.onSelected() 与 LunaSModButton.onClick() 会把当前选中的舰船对象
（FleetMember）写进「交互目标实体」的持久内存：

    dialog.getInteractionTarget().getMemory().set("$selectedShip", fleetMember);

这份内存会被序列化进 campaign.xml。读档时，星区政府 XStream 反序列化到该
FleetMember 时会调用 FleetMember.readResolve()，它需要
Global.getSector().getPlayerFleet()，而此时玩家舰队尚未建立，于是抛出
NullPointerException，导致：

    Error loading saved game:
    Error loading game: Failed calling method
    method: com.fs.starfarer.campaign.fleet.FleetMember.readResolve()

即「存档无法读取」。凡是用了内置插件（经验内插）功能、且该次选择没有被
rules 里的 unset 清掉的存档，都会中招。

补丁内容（仅重编译 7 个 class，其余文件未改动）
---------------------------
1. 新增 progsmod/util/SelectedShip.java
   - 选中舰船改写进「交互临时内存」MemKeys.LOCAL（引擎不会把它写进存档）
   - rules 引擎依然能读到 $selectedShip，菜单行为不变
   - 同时清除实体内存里由旧版本遗留的 $selectedShip（防止继续被序列化）
2. progsmod/data/campaign/rulecmd/ui/plugins/ShipSelector.java
   - 改用 SelectedShip.set(...)
3. progsmod/data/campaign/LunaSModButton.java
   - 同上（LunaLib 改装界面按钮那条路径）
4. progsmod/data/console/AddShipXP.java / AddReserveShipXP.java / ClearShipData.java
   - 改为 SelectedShip.get(...)：优先读 LOCAL，兼容旧值，控制台功能保留

文件与还原
---------------------------
- 原始 jar 备份：jars\Progressive S-Mods.jar.psmfix-orig
  还原方法：把该备份改名覆盖回 jars\Progressive S-Mods.jar 即可。
- 补丁源码与编译产物：见工作区 psm_patch\（src 源码、out 编译结果、backup 原始 jar）

注意
---------------------------
1. 本补丁只阻止「新的存档被写坏」，不会自动修复已经损坏的存档。
2. MOD 升级后本补丁会被覆盖，需要重新打。
3. 建议把该 BUG 反馈给作者 qcwxezda（上游修复方向：不要把 FleetMember 放进持久内存）。
